#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>

#define LCD_PATH "/dev/fb0"
int *plcd; //保存得到的映射区域的首地址
int lcd_fd; //保存获取到的LCD屏幕的文件描述符

/*
    lcd_init: LCD初始化
    返回值：
        int
        成功 0
        失败 -1
*/
int lcd_init()
{
    //1.open打开帧缓冲设备文件
    lcd_fd = open(LCD_PATH, O_RDWR);
    if (-1 == lcd_fd)
    {
        perror("open /dev/fb0 fail");
        return -1;
    }

    //2.映射屏幕文件到进程内存中
    plcd = mmap(NULL, 800*480*4, PROT_READ | PROT_WRITE, MAP_SHARED, lcd_fd, 0);
    if (plcd == MAP_FAILED)
    {
        perror("mmap fail");
        close(lcd_fd);
        return -1;
    }

    return 0;
}

/*
    lcd_uninit:LCD屏幕解初始化
*/
void lcd_uninit(void)
{
    munmap(plcd, 800*480*4);
    close(lcd_fd);
}
